home *** CD-ROM | disk | FTP | other *** search
/ APC & TCP 4 / APC & TCP 4.iso / games / publicdomain / a / asteroids2 / rotx / asm / line.asm < prev   
Assembly Source File  |  1995-07-20  |  2KB  |  101 lines

  1. ;
  2. ;    my first fucking blitter code
  3. ;
  4. ;
  5. ;
  6. ;
  7.  
  8.     include 'include:exec/types.i'
  9.     include 'include:hardware/custom.i'
  10.     include 'include:hardware/blit.i'
  11.     include 'include:hardware/dmabits.i'
  12.  
  13.     xref _custom
  14.     xdef _Line
  15.  
  16.     
  17.     section code
  18.  
  19. _Line:
  20.     lea        $dff000,a1
  21.     sub.w    d0,d2
  22.     bmi        xneg
  23.     sub.w    d1,d3
  24.     bmi        yneg
  25.     cmp.w    d3,d2
  26.     bmi        ygtx
  27.     moveq.l    #OCTANT1+LINEMODE,d5
  28.     bra        lineagain
  29. ygtx:
  30.     exg        d2,d3
  31.     moveq.l    #OCTANT2+LINEMODE,d5
  32.     bra        lineagain
  33. yneg:
  34.     neg.w    d3
  35.     cmp.w    d3,d2
  36.     bmi        ynygtx
  37.     moveq.l    #OCTANT8+LINEMODE,d5
  38.     bra        lineagain
  39. ynygtx:
  40.     exg        d2,d3
  41.     moveq.l    #OCTANT7+LINEMODE,d5
  42.     bra        lineagain
  43. xneg:
  44.     neg.w    d2
  45.     sub.w    d1,d3
  46.     bmi        xyneg
  47.     cmp.w    d3,d2
  48.     bmi        xnygtx
  49.     moveq.l    #OCTANT4+LINEMODE,d5
  50.     bra        lineagain
  51. xnygtx:
  52.     exg        d2,d3
  53.     moveq.l    #OCTANT3+LINEMODE,d5
  54.     bra        lineagain
  55. xyneg:
  56.     neg.w    d3
  57.     cmp.w    d3,d2
  58.     bmi        xynygtx
  59.     moveq.l    #OCTANT5+LINEMODE,d5
  60.     bra        lineagain
  61. xynygtx:
  62.     exg        d2,d3
  63.     moveq.l    #OCTANT6+LINEMODE,d5
  64. lineagain:
  65.     mulu.w    #80,d1        ; bitplane width in bytes
  66.     ror.l    #4,d0
  67.     add.w    d0,d0
  68.     add.l    d1,a0
  69.     add.w    d0,a0
  70.     swap        d0
  71.     or.w        #$BFA,d0
  72.     lsl.w    #2,d3
  73.     add.w    d2,d2
  74.     move.w    d2,d1
  75.     lsl.w    #5,d1
  76.     add.w    #$42,d1
  77.     btst        #DMAB_BLTDONE-8,dmaconr(a1)
  78. waitblit:
  79.     btst        #DMAB_BLTDONE-8,dmaconr(a1)
  80.     bne        waitblit
  81.     move.w    d3,bltbmod(a1)
  82.     sub.w    d2,d3
  83.     ext.l    d3
  84.     move.l    d3,bltapt(a1)
  85.     bpl        lineover
  86.     or.w        #SIGNFLAG,d5
  87. lineover:
  88.     move.w    d0,bltcon0(a1)
  89.     move.w    d5,bltcon1(a1)
  90.     move.w    #80,bltcmod(a1)    ; bitplane width in bytes
  91.     move.w    #80,bltdmod(a1)    ; bitplane width in bytes
  92.     sub.w    d2,d3
  93.     move.w    d3,bltamod(a1)
  94.     move.w    d4,bltadat(a1)
  95.     move.l    #-1,bltafwm(a1)
  96.     move.l    a0,bltcpt(a1)
  97.     move.l    a0,bltdpt(a1)
  98.     move.w    d1,bltsize(a1)
  99.     rts
  100.     end
  101.